package mobi.hami.huapin.service;

import mobi.hami.huapin.base.Result;
import mobi.hami.huapin.dto.UserNoteDTO;
import mobi.hami.huapin.dto.UserNoteLogDTO;
import mobi.hami.huapin.model.UserNoteLog;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * Create by 小峰 on 2018/9/13.
 * 用户贴条记录
 */
public interface UserNoteLogService {
    /**
     * 根据空间Id获取当天被贴条的信息
     *
     * @param spaceId
     * @return
     */
    List<UserNoteLog> getCurrentDayUserBySpaceId(Integer spaceId);

    /**
     * 根据空间Id获取昨天新增的被系统的贴条信息
     *
     * @param spaceId
     * @return
     */
    List<UserNoteLog> getYesterdayNewUserBySpaceId(Integer spaceId);

    /**
     * 获取当前空间下其它用户及被贴条数（List）
     *
     * @param spaceId
     * @param userId
     * @return
     */
    List<UserNoteDTO> getUserNoteBySpaceIdAndUserId(Integer spaceId, Integer userId);

    /**
     * 获取当前用户被贴的纸条数
     *
     * @param spaceId
     * @param userId
     * @return
     */
    Integer getUserNoteLogCount(Integer spaceId, Integer userId);


    /**
     * 获取当前用户当前时间贴出的纸条被回复的个数
     *
     * @param spaceId
     * @param userId
     * @return
     */
    Integer getUserReplyCount(Integer spaceId, Integer userId);

    /**
     * 获取7天被贴的纸条
     *
     * @param spaceId
     * @param userId
     * @return
     */
    Map<String, Object> getUserByNote(Integer spaceId, Integer userId);

    /**
     * 获取补贴纸条信息(分页)
     *
     * @param map
     * @return
     */
    Map<String, Object> getUserNoteLogByPage(Map<String, Object> map);

    Integer insertList(List<UserNoteLogDTO> userNoteLogList);

    /**
     * 查询被贴条List
     *
     * @param spaceId
     * @param userId
     * @return
     */
    List<UserNoteLogDTO> findListByToUserId(Integer spaceId, Integer userId);

    /**
     * 查询被贴条List(包含是否点赞)
     * @param spaceId
     * @param searchUserId
     * @param currentUserId
     * @return
     */
    List<UserNoteLogDTO> findListThumbupByUserId(Integer spaceId, Integer searchUserId, Integer currentUserId);

    /**
     * 获取当前用户被贴回复
     * @param userId
     * @return
     */
    Integer getUserReplyRat(Integer userId);

    /**
     * 根据查询条件获取最新的被贴信息
     * @param userId
     * @param spaceId
     * @return
     */
    UserNoteLogDTO findModelByModel(Integer userId,Integer spaceId);

    /**
     * 更新用户回复的状态
     * @param id
     * @param replyStatus
     * @return
     */
    Integer updateUserNoteLogReply(Integer id,Integer replyStatus);

    /**
     * 获取被贴出的纸条,回复列表
     * @param mapRequest
     * @return
     */
    Map<String,Object> getReplyUserNoteLogList(Map<String,Object> mapRequest);

    /**
     * 获取当前被贴纸条的个数
     * @param spaceId
     * @param userId
     * @return
     */
    Integer getCurrentDayNoteLogSum(Integer spaceId,Integer userId);
    /**
     *  判断用户是否已经帖过
     * @param reqmap
     * @return
     */
    Result getNoetStatus(Map<String,String> reqmap);
    /**
     *  给用户帖条
     * @param reqmap
     * @return
     */
    Result giveUserNote(Map<String,String> reqmap);

    /**
     * 增加点赞次数
     * @param spaceId
     * @param userId
     * @param noteLogId
     * @return
     */
    Integer addThubupCountById(Integer spaceId,Integer userId,Integer noteLogId);


    /**
     * 获取该空间下最近7天内的用户的气泡数前5的信息
     * @param spaceId
     * @return
     */
    List<UserNoteDTO> getUserNoteLogSevenDayCountBySpaceId(Integer spaceId);

    /**
     * 获取该空间下最新的被贴的纸条信息
     * @param spaceId
     * @return
     */
    List<Map> getLastNewFiveNoteLogBySpaceId(Integer spaceId);
}
